home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1997 …ember: Reference Library / Dev.CD Dec 97 RL.toast / What's New / Development Kits / TEC 1.2.1 / Sample Code / UnicodeHub / UnicodeHub.h < prev    next >
Encoding:
Text File  |  1997-09-24  |  6.7 KB  |  202 lines  |  [TEXT/CWIE]

  1. // ===========================================================================
  2. //    <PP Starter Header>.h        ©1994-1995 Metrowerks Inc. All rights reserved.
  3. // ===========================================================================
  4.  
  5. #pragma once
  6.  
  7.  
  8. #define FOR_SYSTEM7_AND_SYSTEM8_PREEMPTIVE 1
  9. #define FOR_SYSTEM8_PREEMPTIVE 0
  10. #define FOR_SYSTEM7_AND_SYSTEM8_COOPERATIVE 1
  11. #define FOR_SYSTEM7_AND_SYSTEM8_DEPRECATED 1
  12.  
  13. #include <LApplication.h>
  14. #include <LWindow.h>
  15. #include <LStdControl.h>
  16. #include <LListener.h>
  17. #include <LTextEdit.h>
  18.  
  19. #include <TextCommon.h>
  20. #include <Unicode.h>
  21. #include <TextEncodingConverter.h>
  22.  
  23. typedef TextEncodingRun** TextEncodingRunHdl;
  24. typedef ScriptCodeRun** ScriptCodeRunHdl;
  25.  
  26. const UInt32 kMaxInput        = 128;
  27. const UInt32 kMaxOutput        = kMaxInput*4;
  28. const UInt32 kMaxMappings    = 128;
  29. const UInt32 kMaxLen        = 60;
  30. const UInt32 kMaxNameLen    = 61;
  31.  
  32. const short        kFileMenu = 129;
  33.  
  34.  
  35. const OSStatus  kUnicodeFirstError = -8789;
  36. const OSStatus  kUnicodeLastError = -8738;
  37. const OSStatus    kIllegalHexString = -8737;
  38.  
  39. const int        kIllegalConverter = 0;
  40. const int        kUnicodeConverter = 1;
  41. const int        kHighLevelConverter = 2;
  42.  
  43. #define USEHLC  1
  44.  
  45. class    CPPStarterApp : public LApplication {
  46. public:
  47.     TextEncoding        mAvailableMappings[kMaxMappings];
  48.     unsigned char        mAvailableMappingNames[kMaxMappings][kMaxNameLen+1];
  49.     UInt32                mNumMappings;
  50.     
  51.     
  52.                         CPPStarterApp();        // constructor registers all PPobs
  53.     virtual             ~CPPStarterApp();        // stub destructor
  54.     
  55.         // this overriding function performs application functions
  56.         
  57.     virtual Boolean        ObeyCommand(CommandT inCommand, void* ioParam);    
  58.     
  59.         // this overriding function returns the status of menu items
  60.         
  61.     virtual void        FindCommandStatus(CommandT inCommand,
  62.                             Boolean &outEnabled, Boolean &outUsesMark,
  63.                             Char16 &outMark, Str255 outName);
  64.                             
  65.     OSStatus GetMappings();    
  66.     
  67.     OSStatus DoConvert(    const Handle fromHexText, UInt32 fromLen, UInt32 fromEncoding,
  68.                             Handle toHexText, ByteCount &inputRead, ByteCount &outputLen, ByteCount &toLen, 
  69.                             UInt32 toEncoding, TextEncodingRunHdl &theRuns, UInt32    fromUnicodeFlags, UInt32 toUnicodeFlags, Boolean wantHexOutput);
  70.     
  71.     OSStatus DoConvertToUnicode(     TextEncoding unicodeMapping, UInt32 toUnicodeFlags, TextEncoding fromEncoding, Handle srcHLocked, ByteCount srcLen,
  72.                                     Handle destHLocked, ByteCount &inputRead, ByteCount &unicodeLen, ByteCount maxOutput);
  73.  
  74.     OSStatus DoConvertToEncoding(    TextEncoding fromEncoding, UInt32 fromUnicodeFlags, TextEncoding toEncoding, Handle srcHLocked, ByteCount srcLen,
  75.                                     Handle destHLocked, ByteCount &inputRead, ByteCount &outputLen, ByteCount maxOutput);
  76.     OSStatus ConvertFromMulti(    TextEncoding  unicodeEncoding, const Handle fromHexText, TEStyleHandle theStyle,UInt32 fromLen,
  77.                             Handle &toHexText, ByteCount &inputRead, ByteCount &outputLen, ByteCount &toLen, 
  78.                             ByteCount** &theRuns, UInt32 toUnicodeFlags);
  79.     OSStatus DoConvertToMultiple(    TextEncoding unicodeEncoding, UInt32 fromUnicodeFlags, TextEncodingRunHdl &theRuns, Handle srcHLocked, ByteCount srcLen,
  80.                                 Handle destHLocked, ByteCount &inputRead, ByteCount &outputLen, ByteCount maxOutput);
  81.     
  82.     OSStatus DoConvertUsingHLC(    TextEncoding fromTextEncoding, Handle srcHLocked, ByteCount fromTextLen,
  83.                                     TextEncoding toTextEncoding,  Handle destHLocked, ByteCount toTextLen,
  84.                                      ByteCount &inputRead, ByteCount &outputLen );
  85.  
  86.     virtual void ShowAboutBox();
  87.  
  88.     void ResolveConversionParams(    UInt32    fromEncodingIndex,  TextEncoding *fromTextEncoding,
  89.                                     UInt32     toEncoding,         TextEncoding *toTextEncoding, int *converterToUse );
  90.                                         
  91.     Boolean IsUnicode( TextEncoding encoding );
  92. protected:
  93.  
  94.     virtual void        StartUp();        // overriding startup functions
  95.  
  96. };
  97.  
  98.  
  99. class CUnicodeTablesPopup : public LStdPopupMenu {
  100. public:
  101.     enum { class_ID = 'CuPp' };
  102.  
  103.     static CUnicodeTablesPopup*    CreateUnicodeTablesPopupStream(LStream *inStream);
  104.                 CUnicodeTablesPopup(const SPaneInfo &inPaneInfo,
  105.                     MessageT inValueMessage, Int16 inTitleOptions,
  106.                     ResIDT inMENUid, Int16 inTitleWidth,
  107.                     Int16 inPopupVariation, ResIDT inTextTraitsID,
  108.                     Str255 inTitle, OSType inResTypeMENU,
  109.                     Int16 inInitialMenuItem);
  110.                 CUnicodeTablesPopup(const SPaneInfo &inPaneInfo,
  111.                     MessageT inValueMessage, Int32 inMaxValue,
  112.                     ResIDT inTextTraitsID, ControlHandle inMacControlH);
  113.                 CUnicodeTablesPopup(LStream *inStream);
  114.                 
  115.                 void FillMenuWithUnicodeTables(void);
  116.  
  117.     virtual    ~CUnicodeTablesPopup() ;
  118. };
  119.  
  120. class CFontMenuPopup : public LStdPopupMenu {
  121. public:
  122.     ScriptCode    mInstalledFonts[128];
  123.  
  124.     enum { class_ID = 'CsPp' };
  125.  
  126.     static CFontMenuPopup*    CreateFontMenuPopupStream(LStream *inStream);
  127.                 CFontMenuPopup(const SPaneInfo &inPaneInfo,
  128.                     MessageT inValueMessage, Int16 inTitleOptions,
  129.                     ResIDT inMENUid, Int16 inTitleWidth,
  130.                     Int16 inPopupVariation, ResIDT inTextTraitsID,
  131.                     Str255 inTitle, OSType inResTypeMENU,
  132.                     Int16 inInitialMenuItem);
  133.                 CFontMenuPopup(const SPaneInfo &inPaneInfo,
  134.                     MessageT inValueMessage, Int32 inMaxValue,
  135.                     ResIDT inTextTraitsID, ControlHandle inMacControlH);
  136.                 CFontMenuPopup(LStream *inStream);
  137.                 
  138.                 void FillFontMenu(void);
  139.                 ScriptCode GetSelectedScript(void);
  140.                 void SetMValue(ScriptCode theValue);
  141.                 void SetValueByFont(SInt16    font);
  142.  
  143.     virtual    ~CFontMenuPopup() ;
  144. };
  145.  
  146. class CUnicodeHubWindow : public LWindow, public LListener {
  147.     UInt32        mFromUnicodeFlags;
  148.     UInt32        mToUnicodeFlags;
  149.     
  150. public:
  151.     enum { class_ID = 'CuWi' };
  152.  
  153.     static            CUnicodeHubWindow*    CreateUnicodeHubWindowStream(LStream *inStream);
  154.                     
  155.                     void InitUnicodeHubWindow(void);
  156.                     CUnicodeHubWindow(LStream *inStream);
  157.                     CUnicodeHubWindow(
  158.                             const SWindowInfo    &inWindowInfo);
  159.                     CUnicodeHubWindow(
  160.                             ResIDT                inWINDid,
  161.                             Uint32                inAttributes,
  162.                             LCommander            *inSuperCommander);
  163.                     
  164.     virtual void    ListenToMessage( MessageT inMessage, void *ioParam );
  165.             void    ConvertButtonHit( MessageT    inMessage );
  166.             void    ConvertTextToHex( MessageT    inMessage );
  167.  
  168.  
  169. };
  170.  
  171. class CStyleText : public LTextEdit {
  172.     
  173. public:
  174.     short            mCurKeyScript;
  175.     enum { class_ID = 'texS' };
  176.  
  177.     static CStyleText*    CreateStyleTextEditStream(LStream *inStream);
  178.                         CStyleText(LStream *inStream);
  179.  
  180.                         CStyleText(const SPaneInfo &inPaneInfo,
  181.                                 const SViewInfo &inViewInfo,
  182.                                 Uint16 inTextAttributes,
  183.                                 ResIDT inTextTraitsID);
  184.     virtual Boolean        FocusDraw();
  185.     virtual    void        SpendTime(const EventRecord &inMacEvent);
  186.     virtual void         Click( SMouseDownEvent        &inMouseDown) ;
  187.     virtual Boolean        ObeyCommand(CommandT inCommand, void *ioParam);
  188.  
  189. protected:
  190.     virtual void        BeTarget();
  191. private:
  192.     void                InitStyleTextEdit(ResIDT inTextTraitsID);
  193.  
  194.                     
  195. };
  196.  
  197. Boolean FromHexToString( unsigned char* str, ByteCount length, unsigned char*    dest, ByteCount &actualLen);
  198. void BufToHex( const unsigned char* src, unsigned char* dest, ByteCount    srcLen, ByteCount &destLen, UInt8    clumpSize);
  199.  
  200.  
  201. extern CPPStarterApp*    gTheApp;
  202.